package com.sss.hloster03;

public class TestIf07 {

	public static void main(String[] args) {
		test01();

	}
	
	/**
	 * 逻辑运算短路
	 */
	private static void test03() {
		int i0 = 0;
		int i1 =1;
		int i2 =2;
		int i3 = 3;
		int i4 = 4;
		int i5 =5;
		
		// 或短路
		//  表达式结果: 1      0       2      2
		boolean isOk = ++i0 > --i1 || i2++ < --i3 || i4-- > i5++;  // true
		//   变量结果：        1      0     3       2   
		
		System.out.println("或短路运算结果为："+isOk);
		System.out.println("i0="+i0);
		System.out.println("i1="+i1);
		System.out.println("i2="+i2);
		System.out.println("i3="+i3);
		System.out.println("i4="+i4);
		System.out.println("i5="+i5);
		
		System.out.println("==============================================");		
		// 重置变量的初始值
		 i0 = 0;
		 i1 =1;
		 i2 =2;
		 i3 = 3;
		 i4 = 4;
		 i5 =5;
		
		// 与短路
		//  表达式结果:  1      1       2      2
		boolean isOk2 = ++i0 > i1-- && i2++ < --i3 && i4-- < i5++;  // true
		//   变量结果：        1      0     3       2   
		
		System.out.println("或短路运算结果为："+isOk2);
		System.out.println("i0="+i0);
		System.out.println("i1="+i1);
		System.out.println("i2="+i2);
		System.out.println("i3="+i3);
		System.out.println("i4="+i4);
		System.out.println("i5="+i5);
		
		int ii = 0;
		int kk = 0;
		int jj = kk++  +   ii++;
		
	}
	
	/**
	 * ++ --运算
	 */
	private static void test02() {
		//表达式
		int iVcr1 = 0;
		int iVcr2 = iVcr1 +2;//表达式
		System.out.println("iVar1++:"+(iVcr1++));
		System.out.println("iVcr1:"+iVcr1);
		//重置变量iVcr1的值
		iVcr1 = 0;
		int iTemp = ++iVcr1;
		System.out.println("iVcr1++:"+iTemp);
		System.out.println("iVcr1:"+iVcr1);
		
		/////////////////////////////////////
		//+=简写形式，不能和变量声明语句一起使用；
		int iVcr11 = 0;
		iVcr11 += 2;
		//int iVal12 +=2;//why?
		//等价于
		//int iVcr12 = iVcr12 +2;//iVcr12在运算之前没有进行初始化
		//+=简写形式，可以不涉及类型转换；（参考实例）
		byte bVcr1 = 0;
		//bVcr1 = bVcr+1;//涉及类型转换
		bVcr1 +=1;//右侧1可以看作是偏移量，不需要进行类型转换
	}
	
	/**
	 * 位运算
	 * 原则：计算机中所有的数都是以补码的形式存在的；
	 */
	private static void test01() {
		//取反运算
		int iVal30 = 2;
		int iVal31 = ~iVal30;
		System.out.println("iVal31="+iVal31);
		
		int iVal40 = -2;
		int iVal41 = ~iVal40;
		System.out.println("iVal41="+iVal41);
		
		//左移运算
		int iVcr1 = -2;
		int iVcr2 = iVcr1  <<2;
		System.out.println("iVcr2="+iVcr2);
		
		//与运算
		int iVcr20  = -3;
		int iVcr21 = 4;
		int iVcr23 = iVcr20 &iVcr21;
		System.out.println("iVcr23="+iVcr23);
		
		
	}
	
}
